home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue50 / IPC / File Mappings / Delphi / ChildMainFormUnit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-31  |  1.2 KB  |  65 lines

  1. unit ChildMainFormUnit;
  2.  
  3. {$define Mutex}
  4.  
  5. interface
  6.  
  7. uses
  8.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  9.   StdCtrls, IPCThrd;
  10.  
  11. type
  12.   TForm1 = class(TForm)
  13.     Memo1: TMemo;
  14.     procedure FormCreate(Sender: TObject);
  15.     procedure FormDestroy(Sender: TObject);
  16.     procedure Memo1Change(Sender: TObject);
  17.   private
  18.     { Private declarations }
  19.   public
  20.     MemMapFile: TSharedMem;
  21.   {$ifdef Mutex}
  22.     Mutex: TMutex;
  23.   {$endif}
  24.   end;
  25.  
  26. var
  27.   Form1: TForm1;
  28.  
  29. const
  30.   MemMapFileName = 'SampleMemoryMappedFile';
  31.   MemMapSize = 1000;
  32.  
  33. implementation
  34.  
  35. {$R *.DFM}
  36.  
  37. procedure TForm1.FormCreate(Sender: TObject);
  38. begin
  39. {$ifdef Mutex}
  40.   Mutex := TMutex.Create('FileMappingMutex');
  41. {$endif}
  42.   MemMapFile := TSharedMem.Create(MemMapFileName, MemMapSize);
  43. end;
  44.  
  45. procedure TForm1.FormDestroy(Sender: TObject);
  46. begin
  47.   MemMapFile.Free
  48. end;
  49.  
  50. procedure TForm1.Memo1Change(Sender: TObject);
  51. var
  52.   Msg: String;
  53. begin
  54. {$ifdef Mutex}
  55.   Mutex.Get(Integer(Infinite));
  56. {$endif}
  57.   Msg := Memo1.Text;
  58.   Move(PChar(Msg)^, MemMapFile.Buffer^, Length(Msg) + 1);
  59. {$ifdef Mutex}
  60.   Mutex.Release;
  61. {$endif}
  62. end;
  63.  
  64. end.
  65.